Data sources such as directories have become key solutions of successful large-scale IT operations and e-business applications. The implementation and utilization of centralized, corporate-wide directories are highly demanded projects because of the dramatic cost reduction they provide over many distributed directories in varying sizes. One type of response to these requirements has been provided by International Business Machines Corp. of Armonk, N.Y. (IBM). Specifically, IBM has introduced solutions such as the IBM Directory Server (IDS), which implements Lightweight Directory Access Protocol (LDAP), and IBM Directory Integrator (IDI), which is designed to transform data between different data sources such as LDAP directories.
In general, IDI technology helps developers integrate different data sources by abstracting the technical details of low-level application programming interface (API) calls required to interact with the various data sources, formats and protocols. IDI is considered to be a powerful tool for integrating two or more directories. As such, it is often used to synchronize two directories. Specifically, in a common scenario, two directories might need to be synchronized such that changes to one directory can be applied to another. Under the current IDI implementation, the IDI technology will interact with an IDS change log to determine the changes made to the first directory. Such changes can then be synchronized to the second directory.
Unfortunately, the current IDI implementation is not without drawbacks. For example, although IDI includes software components (e.g., IDI connectors) that can be used to synchronize directories using change logs, it lacks the techniques and features that are needed for full synchronization. Specifically, one impediment imposed by IDI connectors is that they fail to recognize multiple modification operations (e.g., add, delete, modify/replace) that may be stored in a single change log entry. Moreover, current IDI technology assumes that a modification specified in a change log entry is always a replace. This could create a serious problem when full synchronization for multi-valued attributes is desired between two directories.
In view of the foregoing, there exists a need for a change log handler for synchronizing data sources. Specifically, a need exists for a change log handler that is capable of accommodating change log entries that include multiple modification operations and/or multi-valued attributes so that full synchronizing between two data sources can be provided.